package com.cskaoyan.javase.oop2._1extends._10final._3variable._0introduction;
/**
 * final修饰变量,表示最终的变量,不能再变的量,就是"常量"
 * final修饰变量,表示常量
 * final修饰变量时,可以修饰三种类型的变量:
 *      1.局部变量
 *      2.成员变量
 *      3.静态成员变量
 * 在具体学习final修饰三种类型变量之前,先明确三大原则:
 *      常量的分类:
 *          a.字面值常量: "hello",123,0.1,null,false
 *          b.自定义常量: final修饰的变量
 *      1.final修饰变量表示的常量,是常量分类中的"自定义常量"
 *          自定义常量区别于字面值常量,存在一个常量名
 *          这个常量名的命名:
 *              a.单词字母全部大写
 *              b.每个单词之间用"_"隔开
 *          举例: MAX_VALUE,MIN_VALUE
 *          注:
 *          "_"在代码中出现,这几乎是唯一场景,其他场景都不推荐使用"_"
 *          从实际代码来看,final修饰的静态成员变量建议采取这种命名方式
 *          其它的,不建议采取这种方式
 *          这种命名格式,不强求,因为即便是源码中也没有严格遵守
 *
 *
 *      2.(重要)final修饰变量,表示常量,但是除了该变量的取值不能发生变化成为常量之外
 *          该变量在内存中存储位置,生命周期,使用方式等等都不会发生改变
 *          final修饰成员变量 --> 成员常量
 *          仍然在堆上的对象中存储,仍然用对象名点访问..
 *
 *      3.final修饰变量,从数据类型分类来说,可以修饰:
 *          a.基本数据类型变量: 基本数据类型变量都是一个取值,所以final修饰它,表示这个取值不再变化.
 *
 *          b.引用数据类型变量:
 *              final修饰的是引用,表示引用不可变,引用是一个常量
 *              也就是说,引用不能指向新的对象了,但是这个引用所指向的对象的状态是可以改变的
 *
 * @sice 16:33
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}
